/*
 * Copyright (c) 2006-2021, Halo team
 *
 * SPDX-License-Identifier: GPLv3
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-09-11     Eywen        the first version
 */

#ifndef APPLICATIONS_FDM_PRINTER_H_
#define APPLICATIONS_FDM_PRINTER_H_

#include <stdint.h>
#include <stdbool.h>

#include "motion_step.h"
#include "extruder_step.h"
#include "hard_task.h"
#include "motion_control.h"
#include "gcode/gcode.h"

typedef struct gcode_handle gcode_handle_t;

typedef struct fdm_printer{
    extruder_step_t *extruder_step_e;

    hard_task_t *step_pwm_hard_task;
    gcode_handle_t *gcode_handle;
    motion_control_t *motion_control;

}fdm_printer_t;


void fdm_printer_test(void);
bool fdm_printer_run(void);
void fdm_extruder_init(void);
#endif /* APPLICATIONS_FDM_PRINTER_C_ */
